{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "###################################################################################################\n",
    "#\n",
    "# Copyright (C) 2022 Maxim Integrated Products, Inc. All Rights Reserved.\n",
    "#\n",
    "# Maxim Integrated Products, Inc. Default Copyright Notice:\n",
    "# https://www.maximintegrated.com/en/aboutus/legal/copyrights.html\n",
    "#\n",
    "###################################################################################################\n",
    "\n",
    "import os\n",
    "import sys\n",
    "\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "import matplotlib.patches as patches\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "sys.path.append(os.path.dirname(os.getcwd()))\n",
    "sys.path.append(os.path.join(os.path.dirname(os.getcwd()), 'models'))\n",
    "\n",
    "from collections import OrderedDict\n",
    "\n",
    "import ai8x\n",
    "from datasets import svhn\n",
    "from utils import parse_obj_detection_yaml\n",
    "\n",
    "import parse_qat_yaml\n",
    "\n",
    "from distiller import apputils\n",
    "\n",
    "ai85net_tinierssd = __import__(\"ai85net-tinierssd\")\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test dataset length: 12251\n",
      "\n"
     ]
    }
   ],
   "source": [
    "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "\n",
    "#CHANGE ME: Change below path to folder that contains or will contain dataset\n",
    "#           (Data loader will create and use PascalVOC folder ubder this main root folder)\n",
    "#           Below is an example where a path under Ubuntu root folder ('/'): /data2/ml/ \n",
    "#           is used for data files'\n",
    "data_path = os.path.join(os.path.dirname('/'), 'data2', 'ml')\n",
    "\n",
    "class Args:\n",
    "    def __init__(self, act_mode_8bit):\n",
    "        self.act_mode_8bit = act_mode_8bit\n",
    "        self.truncate_testset = False\n",
    "\n",
    "args = Args(act_mode_8bit=False)\n",
    "\n",
    "_, test_set = svhn.SVHN_74_get_datasets((data_path, args), load_train=False, load_test=True)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'start_epoch': 25, 'weight_bits': 8, 'shift_quantile': 0.995}\n",
      "Configuring device: MAX78000, simulate=False.\n"
     ]
    }
   ],
   "source": [
    "num_classes = 11\n",
    "\n",
    "qat_yaml_file_used_in_training = os.path.join(os.path.dirname(os.getcwd()), 'policies', 'qat_policy_svhn.yaml')\n",
    "qat_policy = parse_qat_yaml.parse(qat_yaml_file_used_in_training)\n",
    "\n",
    "ai8x.set_device(85, False, False)\n",
    "\n",
    "model = ai85net_tinierssd.ai85tinierssd(num_classes=num_classes, device=device)\n",
    "\n",
    "# Run training first, using scripts/train_svhn_tinierssd.sh\n",
    "checkpoint_path = '../../ai8x-synthesis/trained/ai85-svhn-tinierssd-qat8.pth.tar'\n",
    "\n",
    "# Fuse the BN parameters into conv layers before Quantization Aware Training (QAT)\n",
    "ai8x.fuse_bn_layers(model)\n",
    "\n",
    "# Switch model from unquantized to quantized for QAT\n",
    "ai8x.initiate_qat(model, qat_policy)\n",
    "\n",
    "model = apputils.load_lean_checkpoint(model, checkpoint_path, model_device=device)\n",
    "ai8x.update_model(model)\n",
    "\n",
    "model = model.to(device)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'multi_box_loss': {'alpha': 2, 'neg_pos_ratio': 3}, 'nms': {'min_score': 0.2, 'max_overlap': 0.3, 'top_k': 20}}\n"
     ]
    }
   ],
   "source": [
    "obj_detection_params_yaml_file = os.path.join(os.path.dirname(os.getcwd()), 'parameters', 'obj_detection_params_svhn.yaml')\n",
    "obj_detection_params = parse_obj_detection_yaml.parse(obj_detection_params_yaml_file)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "selected_idx = 345 #np.random.randint(len(test_set))\n",
    "\n",
    "img, (boxes, lbls) = test_set[selected_idx]\n",
    "img = img.to(device)\n",
    "img_to_plot = ((128*(img.detach().cpu().numpy()+1))).astype(np.uint8)\n",
    "img_to_plot = img_to_plot.transpose([1,2,0])\n",
    "\n",
    "img_model = img.unsqueeze(0)\n",
    "locs, scores = model(img_model)\n",
    "\n",
    "all_images_boxes, all_images_labels, all_images_scores = \\\n",
    "    model.detect_objects(locs, scores,\n",
    "                         min_score=obj_detection_params['nms']['min_score'],\n",
    "                         max_overlap=obj_detection_params['nms']['max_overlap'],\n",
    "                         top_k=obj_detection_params['nms']['top_k'])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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d+/W2m3duhVz5swBADzxxBPIzMxsch/q759ounXrhkWLFsHj8YTXJcRHBqvDhMbOug8RPQi98MILOO200wAAmzdvxr333ouRI0ciNzcXp59+Op5++mkjSXCi3HXXXbjmmmtgWRa+/fZb/O53v8NFF10UnoA5e/Zs+uu5ufZDMtIS2xbvZl3f/cGkXujH0qEiPT0dCxYsQGZmJnbt2oXbbrst4nulFK6//nrU1NRg/PjxOP/881u0P0cddRTOOeccALXTDL7++usWXV9bRxwsDhOCwWD438888wyGDh1q1C469nTkkUdi/fr1WL16NV555RWsXbsWmzdvht/vR1FREYqKivDwww/jjTfeiPtrO1E8Hg/mz5+PmTNn4oUXXsCbb76JDRs2wOfz4ZNPPsEnn3yCRx55BM899xx++tOfhtvV3w8ffPBB+JdtQ/Ts2bPZt6G5qb9tv/71r3HJJZcYtTuc7H46d+6MYcOGYeXKlXj11Vfh9/vD58B//vOf8FzAoUOH4sUXX9Ta139y3759e7jOCSec0CSXigEDBuCNN94AUPva8Igjjmj0Mg4XZLA6TAgFdIHaX8GJ2r+MHDkSI0eOBADs378fq1atwh/+8Ae8+eab+OKLL3DZZZehuLg4oXWYMGDAANx777249957UV1djXXr1mHhwoX461//ioqKClxxxRX44osvwjGu+vuhS5cubWIQMqX+tplach2OdOnSBUDtE+W+ffvC50ZNTU24Tn2ni1i89dZbeOuttwAAs2fPbtL+luwH5shrwMOEk046KXxhvP3228267E6dOuGyyy7D6tWrw15rH374IT777LOIei19Yaanp2PUqFH485//HHYbOHDgAF5//fVwnVBQG0hsPyTjTeaoo45CTk4OgOY/xqnEV199Ff53dnb2IewJIhxW5KkqPjJYHSZ06dIFP/7xjwEACxcubFCI0FRCT1sAwiKNEOnp6QAif8G2FLH6MWrUqHB85fHHH29ybqPQtgCtsz0m+87lcmHMmDEAgBUrVuDTTz9t8X61NXbv3h1WP+bl5UXYL5155plhVWKsv+3bt4frT5o0KSEV4/bt27Fy5UoAwNFHH40jjzwysY1LcWSwOoy48847AdTK2C+++GKUlJTErFtTU4Pf/e53EWKJDz/8EB9++GHMNkoprFq1CgCo31/odcuXX37Z5EECAL7/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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1)\n",
    "ax.imshow(img_to_plot)\n",
    "\n",
    "plt.tick_params(labelsize=16)\n",
    "        \n",
    "subplot_title=(\"Test set item: \" + str(selected_idx))\n",
    "ax.set_title(subplot_title, fontsize = 20)\n",
    "\n",
    "# Truth boxes\n",
    "boxes_resized = [[box_coord * test_set.resize_size[0] for box_coord in box] for box in boxes]\n",
    "for b in range(len(boxes)):\n",
    "    bb = boxes_resized[b]\n",
    "    rect = patches.Rectangle((bb[0], bb[1]), bb[2] - bb[0], bb[3] - bb[1], linewidth=3,\n",
    "                            edgecolor='r', facecolor=\"none\")\n",
    "    ax.add_patch(rect)\n",
    "\n",
    "# Predicted boxes\n",
    "boxes_resized = [[box_coord * test_set.resize_size[0] for box_coord in box.detach().cpu().numpy()] for box in all_images_boxes]\n",
    "detected_labels = [val.item() if val.item() != 10 else 0 for val in all_images_labels[0]]\n",
    "for b in range(len(boxes_resized[0])):\n",
    "    if(detected_labels[b] != 0):\n",
    "        bb = boxes_resized[0][b]\n",
    "        rect = patches.Rectangle((bb[0], bb[1]), bb[2] - bb[0], bb[3] - bb[1], linewidth=3,\n",
    "                                edgecolor='b', facecolor=\"none\")\n",
    "        \n",
    "        ax.text(bb[0],(bb[1]), detected_labels[b], verticalalignment='center', color='white', fontsize=18, weight='bold')\n",
    "        ax.add_patch(rect)    \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.8.11 ('venv')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.11"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "863a9e5f3a1784abd95e21166e46836b70be3648b121bdb15ceb95ede6f5ed18"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
